/**
 * UI窗口基类 (Window)
 * 
 * 功能说明：
 * - 所有UI窗口的基类，定义了窗口的基本生命周期
 * - 提供统一的窗口创建、显示、关闭接口
 * - 支持窗口的初始化、显示和清理操作
 * 
 * 设计模式：
 * - 模板方法模式 (Template Method Pattern)
 * - 生命周期钩子方法
 * 
 * 使用方式：
 * 1. 继承Window类创建具体的窗口
 * 2. 重写OnCreate()进行初始化
 * 3. 重写OnShow()处理显示逻辑
 * 4. 重写OnClose()进行清理工作
 */

using UnityEngine;

namespace Game.UI
{
    /**
     * UI窗口基类
     * 
     * 所有UI窗口都应该继承此类，以获得统一的窗口管理功能
     */
    public class Window : MonoBehaviour
    {
        /**
         * 窗口创建时调用
         * 
         * 功能：
         * - 窗口实例化后，显示前的初始化工作
         * - 初始化窗口数据、绑定事件、设置默认状态等
         * - 在OnShow()之前调用，此时窗口还未显示
         * 
         * 使用场景：
         * - 初始化窗口数据
         * - 绑定UI事件
         * - 设置默认的UI状态
         * - 加载窗口相关的资源
         */
        public virtual void OnCreate() { }

        /**
         * 窗口显示时调用
         * 
         * 功能：
         * - 窗口显示时的逻辑处理
         * - 刷新窗口内容、播放动画、设置焦点等
         * - 在OnCreate()之后调用，此时窗口已经显示
         * 
         * 使用场景：
         * - 刷新窗口数据
         * - 播放显示动画
         * - 设置输入焦点
         * - 开始窗口相关的定时器
         */
        public virtual void OnShow() { }

        /**
         * 窗口关闭时调用
         * 
         * 功能：
         * - 窗口关闭时的清理工作
         * - 释放资源、取消事件绑定、停止定时器等
         * - 在窗口销毁前调用
         * 
         * 使用场景：
         * - 取消事件绑定
         * - 停止定时器和协程
         * - 释放临时资源
         * - 保存窗口状态
         */
        public virtual void OnClose() {}
    }
}